{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 一.简介\n",
    "\n",
    "adaboost是一种boosting方法，它的要点包括如下两方面：   \n",
    "\n",
    "#### 1.模型生成\n",
    "每一个基分类器会基于上一轮分类器在训练集上的表现，对样本做权重调整，使得错分样本的权重增加，正确分类的样本权重降低，所以当前轮的训练更加关注于上一轮误分的样本；   \n",
    "\n",
    "#### 2.模型组合\n",
    "adaboost是采用的加权投票的方法   \n",
    "\n",
    "简单来说，adaboost算法涉及两种权重的计算：**样本权重**、**分类器权重**，接下来直接讲算法流程"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 二.算法流程\n",
    "\n",
    "输入：训练集$T=\\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\\}$，其中$x_i\\in R^n,y_i\\in\\{+1,-1\\},i=1,2,...,N$   \n",
    "\n",
    "输出：最终分类器$G(x)$  \n",
    "\n",
    ">（1）初始化训练数据的权重分布：  \n",
    "\n",
    "$$\n",
    "D_1=(w_{11},...,w_{1i},...,w_{1N}),w_{1i}=\\frac{1}{N},i=1,2,...,N\n",
    "$$  \n",
    "\n",
    ">（2）对$m=1,2,...,M:$   \n",
    "\n",
    ">>（2.1）使用具有权重分布$D_m$的训练数据集学习，得到基本分类器：$G_m(x)$   \n",
    ">>（2.2）计算$G_m(x)$在训练集上的分类误差率：$e_m=\\sum_{i=1}^NP(G_m(x_i)\\neq y_i)=\\sum_{i=1}^Nw_{mi}I(G_m(x_i)\\neq y_i)$  \n",
    ">>（2.3）计算$G_m(x)$的权重系数：$\\alpha_m=\\frac{1}{2}ln\\frac{1-e_m}{e_m}$  \n",
    ">>（2.4）更新训练样本权重：  \n",
    "$$\n",
    "w_{m+1,i}=\\frac{w_{mi}}{Z_m}exp(-\\alpha_my_iG_m(x_i)),i=1,2,...,N\n",
    "$$  \n",
    "这里$Z_m$是归一化因子   \n",
    "\n",
    ">（3）基于基分类器，构建最终的分类器：  \n",
    "\n",
    "$$\n",
    "G(x)=sign(\\sum_{m=1}^M\\alpha_mG_m(x))\n",
    "$$\n",
    "\n",
    "简单来说大致流程如下：  \n",
    "![avatar](./source/10_adaboost训练.png)\n",
    "\n",
    "### 三.代码实现"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "os.chdir('../')\n",
    "from ml_models import utils\n",
    "from ml_models.tree import CARTClassifier\n",
    "import copy\n",
    "import numpy as np\n",
    "%matplotlib inline\n",
    "\n",
    "\n",
    "\"\"\"\n",
    "AdaBoost分类器的实现，封装到ml_models.ensemble\n",
    "\"\"\"\n",
    "\n",
    "class AdaBoostClassifier(object):\n",
    "    def __init__(self, base_estimator=None, n_estimators=10, learning_rate=1.0):\n",
    "        \"\"\"\n",
    "        :param base_estimator: 基分类器，允许异质；异质的情况下使用列表传入比如[estimator1,estimator2,...,estimator10],这时n_estimators会失效；\n",
    "                                同质的情况，单个estimator会被copy成n_estimators份\n",
    "        :param n_estimators: 基分类器迭代数量\n",
    "        :param learning_rate: 学习率，降低后续基分类器的权重，避免过拟合\n",
    "        \"\"\"\n",
    "        self.base_estimator = base_estimator\n",
    "        self.n_estimators = n_estimators\n",
    "        self.learning_rate = learning_rate\n",
    "        if self.base_estimator is None:\n",
    "            # 默认使用决策树桩\n",
    "            self.base_estimator = CARTClassifier(max_depth=2)\n",
    "        # 同质分类器\n",
    "        if type(base_estimator) != list:\n",
    "            estimator = self.base_estimator\n",
    "            self.base_estimator = [copy.deepcopy(estimator) for _ in range(0, self.n_estimators)]\n",
    "        # 异质分类器\n",
    "        else:\n",
    "            self.n_estimators = len(self.base_estimator)\n",
    "\n",
    "        # 记录estimator权重\n",
    "        self.estimator_weights = []\n",
    "\n",
    "    def fit(self, x, y):\n",
    "        n_sample = x.shape[0]\n",
    "        sample_weights = np.asarray([1.0] * n_sample)\n",
    "        for index in range(0, self.n_estimators):\n",
    "            self.base_estimator[index].fit(x, y, sample_weight=sample_weights)\n",
    "\n",
    "            indicates = (self.base_estimator[index].predict(x) == y).astype(int)\n",
    "            # 计算误分率\n",
    "            error_rate = np.sum([sample_weights[j] * (1.0 - indicates[j]) for j in range(0, n_sample)]) / n_sample\n",
    "\n",
    "            # 计算权重系数\n",
    "            alpha_rate = 1.0 / 2.0 * np.log((1 - error_rate) / (error_rate + 1e-7))\n",
    "            alpha_rate = min(10.0, alpha_rate)\n",
    "            self.estimator_weights.append(alpha_rate)\n",
    "\n",
    "            # 更新样本权重\n",
    "            for j in range(0, n_sample):\n",
    "                sample_weights[j] = sample_weights[j] * np.exp(-1.0 * alpha_rate * np.power(-1.0, 1 - indicates[j]))\n",
    "            sample_weights = sample_weights / np.sum(sample_weights) * n_sample\n",
    "        # 更新estimator权重\n",
    "        for i in range(0, self.n_estimators):\n",
    "            self.estimator_weights[i] *= np.power(self.learning_rate, i)\n",
    "\n",
    "    def predict_proba(self, x):\n",
    "        # TODO:并行优化\n",
    "        result = np.sum(\n",
    "            [self.base_estimator[j].predict_proba(x) * self.estimator_weights[j] for j in\n",
    "             range(0, self.n_estimators)],\n",
    "            axis=0)\n",
    "        return result / result.sum(axis=1, keepdims=True)\n",
    "\n",
    "    def predict(self, x):\n",
    "        return np.argmax(self.predict_proba(x), axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "#造伪数据\n",
    "from sklearn.datasets import make_classification\n",
    "data, target = make_classification(n_samples=100, n_features=2, n_classes=2, n_informative=1, n_redundant=0,\n",
    "                                   n_repeated=0, n_clusters_per_class=1, class_sep=.5,random_state=21)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x21a6a781e10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 同质\n",
    "classifier = AdaBoostClassifier(base_estimator=CARTClassifier(max_depth=2),n_estimators=10)\n",
    "classifier.fit(data, target)\n",
    "utils.plot_decision_function(data, target, classifier)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x21a68766dd8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#异质\n",
    "from ml_models.linear_model import LogisticRegression\n",
    "from ml_models.svm import SVC\n",
    "classifier = AdaBoostClassifier(base_estimator=[LogisticRegression(),SVC(kernel='rbf',C=5.0),CARTClassifier()])\n",
    "classifier.fit(data, target)\n",
    "utils.plot_decision_function(data, target, classifier)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x21a68b1ea20>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 权重衰减\n",
    "classifier = AdaBoostClassifier(base_estimator=[LogisticRegression(),SVC(kernel='rbf',C=5.0),CARTClassifier()],learning_rate=0.5)\n",
    "classifier.fit(data, target)\n",
    "utils.plot_decision_function(data, target, classifier)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 四.问题讨论\n",
    "\n",
    "#### 1.基本要求：弱可学习\n",
    "注意有个基本要求，那就是$e_m<0.5$，即分类器至少是弱可学习的，这样才能保证$\\alpha_m>0$，此时样本的权重调整（如下公式）才有意义，即正确分类的样本权重降低，错误分类的样本权重升高：  \n",
    "\n",
    "$$\n",
    "w_{m+1,i}=\\left\\{\\begin{matrix}\n",
    "\\frac{w_{mi}}{Z_m}e^{-\\alpha_m}, & G_m(x_i)= y_i \\\\ \n",
    "\\frac{w_{mi}}{Z_m}e^{\\alpha_m} & G_m(x_i)\\neq y_i\n",
    "\\end{matrix}\\right.\n",
    "$$   \n",
    "\n",
    "对于二分类问题，弱可学习其实是很容易保证的，对于$e_m>0.5$的情况，只需要对其预测取反，即可得到$1-e_m<0.5$的错误率\n",
    "\n",
    "#### 2.基分类器不支持样本权重怎么办？\n",
    "对于不能支持样本权重训练的基分类器，可以通过样本重采样来实现"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 五.训练误差分析\n",
    "这一部分证明训练误差会随着基分类器的数量增加而指数下降，首先抛出第一个不等式关系：   \n",
    "\n",
    "$$\n",
    "关系式1：\\frac{1}{N}\\sum_{i=1}^NI(G(x_i)\\neq y_i)\\leq \\frac{1}{N}\\sum_{i=1}^Nexp(-y_if(x_i))=\\prod_{m=1}^MZ_m\n",
    "$$  \n",
    "\n",
    "这里$f(x)=\\sum_{m=1}^M\\alpha_mG_m(x),G(x)=sign(f(x)),Z_m$与上面的定义一样，前半部分很好证明：如果$G(x_i)\\neq y_i$，则$y_if(x_i)<0$，所以$exp(-y_if(x_i))\\geq 1=I(G(x_i)\\neq y_i)$，而对于$G(x_i)= y_i$的情况，显然有$exp(-y_if(x_i))\\geq 0=I(G(x_i\\neq y_i))$；   \n",
    "\n",
    "接下来证明后半部分，根据之前的推导，有如下的两点条件需要注意：  \n",
    "\n",
    "$$\n",
    "条件1:w_{1i}=\\frac{1}{N},i=1,2,...,N\\\\\n",
    "条件2:w_{mi}exp(-\\alpha_my_iG_m(x_i))=Z_mw_{m+1,i},i=1,2,...,N,m=1,2,...,M\n",
    "$$  \n",
    "\n",
    "所以：  \n",
    "\n",
    "$$\n",
    "\\frac{1}{N}\\sum_{i=1}^Nexp(-y_if(x_i))\\\\\n",
    "=\\frac{1}{N}\\sum_{i=1}^Nexp(-\\sum_{m=1}^M\\alpha_my_iG_m(x_i)))\\\\\n",
    "=\\sum_{i=1}^N \\frac{1}{N}\\prod_{m=1}^Mexp(-\\alpha_my_iG_m(x_i))\\\\\n",
    "=\\sum_{i=1}^N w_{1i}\\prod_{m=1}^Mexp(-\\alpha_my_iG_m(x_i))(用到了条件1)\\\\\n",
    "=\\sum_{i=1}^N w_{1i}exp(-\\alpha_1y_iG_1(x_i))\\prod_{m=2}^Mexp(-\\alpha_my_iG_m(x_i))\\\\\n",
    "=\\sum_{i=1}^N Z_1w_{2i}\\prod_{m=2}^Mexp(-\\alpha_my_iG_m(x_i))(用到了条件2)\\\\\n",
    "=Z_1\\sum_{i=1}^N w_{2i}\\prod_{m=2}^Mexp(-\\alpha_my_iG_m(x_i))\\\\\n",
    "=Z_1Z_2\\sum_{i=1}^N w_{3i}\\prod_{m=3}^Mexp(-\\alpha_my_iG_m(x_i))\\\\\n",
    "=\\cdots\\\\\n",
    "=\\prod_{m=1}^MZ_m\n",
    "$$  \n",
    "\n",
    "接下来要抛出第二个关系式，对于二分类问题有如下不等式成立：  \n",
    "\n",
    "$$\n",
    "关系式2：\\prod_{m=1}^MZ_m=\\prod_{m=1}^M[2\\sqrt{e_m(1-e_m)}]=\\prod_{m=1}^M\\sqrt{1-4\\gamma_m^2}\\leq exp(-2\\sum_{i=1}^M\\gamma_m^2)\n",
    "$$  \n",
    "\n",
    "这里：$\\gamma_m=\\frac{1}{2}-e_m$，首先证明等式部分，由前面的算法部分，我们知道$e_m=\\sum_{i=1}^Nw_{mi}I(G_m(x_i)\\neq y_i)$，所以：  \n",
    "\n",
    "$$\n",
    "Z_m=\\sum_{i=1}^Nw_{mi}exp(-\\alpha_my_iG_m(x_i))\\\\\n",
    "=\\sum_{y_i=G_m(x_i)}w_{mi}e^{-\\alpha_m}+\\sum_{y_i\\neq G_m(x_i)}w_{mi}e^{\\alpha_m}\\\\\n",
    "=(1-e_m)e^{-\\alpha_m}+e_me^{\\alpha_m}\\\\\n",
    "=2\\sqrt{e_m(1-e_m)}\\\\\n",
    "=\\sqrt{1-4\\gamma_m^2}\n",
    "$$  \n",
    "\n",
    "至于不等式部分，其实对于$\\forall 0\\leq x\\leq 1$，都有$e^{-x/2}\\geq \\sqrt{1-x}$恒成立（证明从略，直观理解如下图），将$x$替换为$4\\gamma_m^2$即可得到上面的不等式，从而关系式2得到证明；  \n",
    "\n",
    "接下来简单做一个推论：一定能找到一个$\\gamma>0$，对所有$\\gamma_m\\geq\\gamma$成立，则有如下关系：  \n",
    "\n",
    "$$\n",
    "关系式3：exp(-2\\sum_{i=1}^M\\gamma_m^2)\\leq exp(-2M\\gamma^2)\n",
    "$$  \n",
    "\n",
    "结合关系式1、2、3可以得出：  \n",
    "\n",
    "$$\n",
    "\\frac{1}{N}\\sum_{i=1}^NI(G(x_i)\\neq y_i)\\leq exp(-2M\\gamma^2)\n",
    "$$  \n",
    "\n",
    "即adaboost的误差上界会随着$M$的增加以指数速率下降"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x21a6b0c1048>]"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x21a6b0c1400>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "x=np.linspace(0,1,10)\n",
    "plt.plot(x,np.sqrt(1-x),'b')\n",
    "plt.plot(x,np.exp(-0.5*x),'r')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
